package com.gitee.yusugar.core.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author Y-sugar
 * 配合 Mybatis-plus 完成条件拼接操作
 * 使用方法：
 *  1.将该注解标注到实体类上.
 *  2.使用 WrapperUtil 将需生成条件实体类传入构建 wrapper
 */
@Target({ ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface QueryField {

    Type[] value() default Type.EQ;

    String alias() default "";

    String column() default "";

    enum Type{

        /**
         * 表示 "="
         */
        EQ,

        /**
         * 表示 "!="
         */
        NE,

        /**
         * 表示 ">="
         */
        GE,

        /**
         * 表示 "<="
         */
        LE,

        /**
         * 表示 ">"
         */
        GT,

        /**
         * 表示 "<"
         */
        LT,

        /**
         * 表示 "like"
         */
        LIKE,

        /**
         * 表示 "order by asc"
         */
        ASC,

        /**
         * 表示 "order by desc"
         */
        DESC
    }

}
